knights を作り始めたきっかけ
手続き型じゃなく関数型の教育用ビジュアルプログラミング環境を設計してるんだけど、結構難しい
真っ先に思いついたのは「縦向けにパイプを連結してそこに物を流す作業を、関数定義とその呼び出しに例える」という方法なんだけど、これだと高階関数と部分適用の概念との対応付けに無理がある
https://gyazo.com/ca865393e597f10b3d8f22811d10ded7
閃いた
関数も定数も丸の形のノードで表現して、ノードエディタ上で左上にあるノードほど早く評価されて、反対に右下にあるノードほど後で評価されるようにする
関数ノードから伸ばした線に対して他のノードからの線が交わるところが関数適用を表す
https://gyazo.com/2ef45c99aa49a7a2ef58624c1e39c435
OCaml っぽいコードと対応づけてみるとこんな感じ
https://gyazo.com/78dd98fe792916fc55a95f7a8614c899